import os
import sys
import MySQLdb
from generic import *

class configuration():
    def __init__(self):
        configure = 1
        #-----------------------------------------------------------------------------------------------------------#
        #                                        ARCHIVO DE CONFIGURACION                                           #
        #-----------------------------------------------------------------------------------------------------------#
        
        #  COMPROBAR SI EL ARCHIVO DE CONFIGURACION EXISTE #
        
        try:
            print "Intentando abrir el archivo de configuracion"
            file_conf = open('./config')
            self.dic = {}
            parsear_conf(file_conf,  self.dic)
            file_conf.close()
            print "El archivo de configuracion ya ha sido creado"
            if raw_input("Quiere reconfigurarlo?") == "si":
                print 0/0
        except:
            
            # EL ARCHIVO DE CONFIGURACION NO EXISTE O QUIERE SER REGENERADO #
            
            print "No se pudo abrir el archivo de configuracion"
            print "Creando archivo de configuracion"
            file_conf = open('./config',  'w')
            create_conf(file_conf)
            file_conf.close()
            try:
                
                # SE REINTENTA ABRIR EL ARCHIVO DE CONFIGURACION #
                
                print "Intentando abrir el archivo de configuracion"
                file_conf = open('./config')
                parsear_conf(file_conf,  self.dic)
                file_conf.close()
                print "El archivo de configuracion ya ha sido creado"
            except:
                
                # NO SE PUDO CREAR O ABRIR NUEVAMENTE EL ARCHIVO DE CONFIGURACION #
                
                print "Error al crear el archivo de configuracion"
                configure = 0
        if configure:
            try:
                #-----------------------------------------------------------------------------------------------------------#
                #                        CONFIGURACION DE LAS BASES DE DATOS                                    #
                #-----------------------------------------------------------------------------------------------------------#
                
                print "Se inicia la configuracion"
                
                #-------------------------------------------------------------------------------------------------------------#
                # COMPROBACION DE LA CONEXION A LA DB DE LOS SERVIDORES CLIENTES #
                #-------------------------------------------------------------------------------------------------------------#
                
                print "Comprobando conexion a base de datos servers"
                db=MySQLdb.connect(host=self.dic["IP_Data_Base:"],user='root',passwd='iamnicsee',db='servers')
                print "Se ha conectado a la base de datos servers exitosamente"
                
                # SE COMPRUEBA QUE LAS LISTAS SEAN LAS CORRECTAS #
                
                servidor=db.cursor()
                try:
                    db.commit()  
                    servidor.execute("SELECT * FROM server_list_sec")
                    for tupla in servidor.fetchall():
                        print tupla[0]
                except:
                    
                    # SI NO EXISTEN LAS LISTAS PERTINENTES, SE PROCEDE A CREARLAS #
                    
                    print "Error al conectar con la tabla server_list_sec"
                    servidor.execute("""CREATE TABLE server_list_sec(ip varchar(16), port varchar(6))""")
                    try:
                        
                        # SE INTENTA ACCEDER A LAS LISTAS CREADAS #
                        
                        servidor.execute("SELECT * FROM server_list_sec")
                        print "Se ha creado correctamente server_list_sec"
                    except:
                        
                        # NO SE TUVO EXITO EN LA CREACION O EL ACCESO A LAS LISTAS CREADAS #
                        
                        print "ERROR! problemas con la tabla server_list_sec!"
                    
                # SE CIERRA LA CONEXION A LA DB DE LOS SERVIDORES CLIENTES #
                
                print "Cerrando conexion a base de datos servers"
                db.close()
                print "Se ha cerrado exitosamente la conexion a la base de datos servers"
                
                #---------------------------------------------------------------------------------------------------------#
                # COMPROBACION DE LA CONEXION A LA DB DEL SERVIDORES DE RUTEO #
                #---------------------------------------------------------------------------------------------------------#
                
                print "Comprobando conexion a base de datos server_router"
                db=MySQLdb.connect(host=self.dic["IP_Data_Base:"],user='root',passwd='iamnicsee',db='server_router')
                print "Se ha conectado a la base de datos server_router exitosamente"
                
                # SE COMPRUEBA QUE LAS LISTAS SEAN LAS CORRECTAS #
                
                servidor=db.cursor()
                try:
                    db.commit()  
                    servidor.execute("SELECT * FROM sr_contact_list")
                    for tupla in servidor.fetchall():
                        print tupla[0]
                except:
                    
                    # SI NO EXISTEN LAS LISTAS PERTINENTES, SE PROCEDE A CREARLAS #
                    
                    print "Error al conectar con la tabla sr_contact_list"
                    servidor.execute("""CREATE TABLE sr_contact_list(id_user varchar(50), status varchar(10), nick varchar(150))""")
                    try:
                        
                        # SE INTENTA ACCEDER A LAS LISTAS CREADAS #
                        
                        servidor.execute("SELECT * FROM sr_contact_list")
                        print "Se ha creado correctamente sr_contact_list"
                    except:
                        
                        # NO SE TUVO EXITO EN LA CREACION O EL ACCESO A LAS LISTAS CREADAS #
                        
                        print "ERROR! problemas con la tabla server_list_sec!"
                
                # SE CIERRA LA CONEXION A LA DB DE LOS SERVIDORES CLIENTES #
                
                print "Cerrando conexion a base de datos server_router"
                db.close()
                print "Se ha cerrado exitosamente la conexion a la base de datos server_router"
                
                #-------------------------------------------------------------------------------------------------------#
                # COMPROBACION DE LA CONEXION A LA DB DEL SERVIDORES CLIENTE #
                #-------------------------------------------------------------------------------------------------------#
                
                print "Comprobando conexion a base de datos server_client"
                db=MySQLdb.connect(host=self.dic["IP_Data_Base:"],user='root',passwd='iamnicsee',db='server_client')
                print "Se ha conectado a la base de datos server_client exitosamente"
                
                # SE COMPRUEBA QUE LAS LISTAS SEAN LAS CORRECTAS #
                
                servidor=db.cursor()
                try:
                    db.commit()  
                    servidor.execute("SELECT * FROM sc_contact_list")
                    for tupla in servidor.fetchall():
                        print tupla[0]
                except:
                    
                    # SI NO EXISTEN LAS LISTAS PERTINENTES, SE PROCEDE A CREARLAS #
                    
                    print "Error al conectar con la tabla sc_contact_list"
                    servidor.execute("""CREATE TABLE sc_contact_list(id_user varchar(50), status varchar(10), nick varchar(150))""")
                    try:
                        
                        # SE INTENTA ACCEDER A LAS LISTAS CREADAS #
                        
                        servidor.execute("SELECT * FROM sc_contact_list")
                    except:
                        
                        # NO SE TUVO EXITO EN LA CREACION O EL ACCESO A LAS LISTAS CREADAS #
                        
                        print "ERROR! problemas con la tabla sc_contact_list!"
                
                # SE CIERRA LA CONEXION A LA DB DE LOS SERVIDORES CLIENTES #
                
                print "Cerrando conexion a base de datos server_client"
                db.close()
                print "Se ha cerrado exitosamente la conexion a la base de datos server_client"
                
                #-----------------------------------------------------------------------------------------------------------#
                #                                          FIN DE LA CONFIGURACION                                               #
                #-----------------------------------------------------------------------------------------------------------#
                
                print "La configuracion ha sido exitosa"
            except:
                
                #-----------------------------------------------#
                # ERROR EN LA CONFIGURACION #
                #-----------------------------------------------#
                
                print "Hubo un error en la configuracion"
